#!conda activate py310
# # -*- coding: utf-8 -*-


"""
@File:      bid_doc.py
@Author:    Jim.Dai.Cn
@Date:      2024/1/29 16:35
@Desc:      使用千问自动编制招标文件
"""


from config.config import *
import docx

from qwen_agent.agents import Assistant
from qwen_agent.utils.utils import save_text_to_file


llm_cfg = {
    'model': 'Qwen-72B-Chat',
    'model_server': 'http://124.225.183.169:3389/api/v1',
    'generate_cfg': {
        'top_p': 0.2
    },
    'max_ref_token':12800
}
llm_cfg_vl = {
    'model': 'qwen-vl-plus',
    'model_server': 'dashscope',
    'generate_cfg': {
        'top_p': 0.32
    }
}
doc_req_path = 'req/2.tech.docx'
doc_out_path = 'out/bid_doc.md'
doc_ref_path = 'ref/sample.docx'


def read_from_doc(path):
    file = docx.Document(path)
    res = []
    for p in file.paragraphs:
        res.append(p.text)
    return res


def util_req_to_history(arr_doc):
    history = []
    for r in arr_doc:
        history.append({'text': r})

    messages = [{
        'role': 'user',
        'content': history
    }]
    return messages


def llm_init():
    init_bot = Assistant(llm=llm_cfg,
                         system_message='你扮演一位专业的招标代理项目经理，你需要先了解客户的招标需求，' +
                                        '再参考知识库中教你的写作技巧，写一篇招标文件。')
    return init_bot


def llm_get_answer(llm_bot, history, question):
    history.append({'role': 'user', 'content': question})
    # {'role': 'user', 'content': '中国邮政储蓄银行股份有限公司江苏省分行2022-2024年全省UPS设备、电池及电池柜集中采购项目技术规范书需求部门经办人（签名）：                            需求部门负责人（签名）：                                      1.概述1.1 本规范书为中国邮政储蓄银行股份有限公司江苏省分行（以下称 “招标人”）为2022-2024年全省UPS设备、电池及电池柜集中采购项目编制的技术规范书，用于供应商（以下称“投标人”）编写技术建议书、技术应答偏离表和报价。1.2投标人应在响应偏离表中对本规范书内容按顺序逐条应答。对本规范书所有条款按“满足”或“不满足”应答。1.3本规范书中加注星号（“★”）的为关键技术要求。关键技术要求不满足则视为废标。如在履约过程中发现投标产品的关键/重要技术或服务要求，与技术规范投标文件中的应答不相符，则招标人有权废除本次中标选结果，招标人因此产生的一切损失由投标人承担。1.4招标人保留对本文件的解释和修改权。招标人有权在投标截止前，根据需要修改和补充本技术规范书。2.采购内容概况2.1需求概述（1）为了保证全省UPS设备、电池及电池柜的持续供应，招标人拟对全省UPS设备、电池及电池柜进行集中采购。（2）本次采购期限为2年。2.2采购内容本次采购内容为UPS设备、电池及电池柜，项目预算为399.1万元。具体需求清单如下（单位：元）：3.项目实施要求★3.1技术参数指标：3.1.1环境要求工作温度：5～40度  贮存温度：-25～55度工作相对湿度：≤90% （402）℃ 无凝露贮存相对湿度：≤95% （402）℃ 无凝露海拔：不超过1000m3.1.2 UPS参数要求（1）1-3KV（2）6kv-10kv（3）15kv-40kv3.1.3 电池与电池柜技术参数要求（1）电池柜须为全封闭金属电池柜，须与电池配套。（2）投标人负责对所销售的电池在报废时进行回收，回收价格在本次投标的销售价格中进行折让，回收时双方不再支付或收取任何费用。（3）电池要求：①12V单体电池 100AH②单体电池额定电压：12V③单体电池浮充电电压：13.5-13.8V④单体电池均衡充电电压：14.1-14.4V⑤单体电池放电终止电压：10.8V（4）主要性能要求：1）当环境温度在20～30℃条件下时，蓄电池性能指标应满足正常使用要求。2）蓄电池在环境温度25℃时的浮充运行设计寿命应不低于6年。3）蓄电池组按规定的试验方法，10h率容量应在第一次充放电循环时不低于0.95C10，三次循环应达到1C10。 4）蓄电池间接线板、终端接头应选择导电性能优良的材料，并具有防腐蚀措施。蓄电池槽、盖、安全阀、极柱封口剂等材料应具有阻燃性。5）蓄电池必须采用全密封防泄漏结构，外壳无异常变形、裂纹及污迹，上盖及端子无损伤，正常工作时无酸雾溢出。6）蓄电池极性正确，正负极性及端子应有明显标志。极板厚度应与使用寿命相适应。7）同一组蓄电池中任意两个电池的开路电压差不应超过60mV。8）蓄电池使用期间安全阀应能自动开启闭合，闭阀压力应在10〜35kPa范围内，开阀压力应在3〜30kPa范围内。两个蓄电池之间连接条的压降，3I10时不超过8mv。9）电池组间互连接线应绝缘，终端电池应提供外接铜芯电缆至直流柜的接线板。10）电池以30I10的电流放电3min，极柱不熔断，其外观不出现异常。11）蓄电池封置28天后，其荷电保持能力不低于96%。12）蓄电池的密封反应效率不低于95%。13）蓄电池需具有较强的耐过充能力和过充寿命。以0.3I10电流连续充电160h后，外观应无明显变形及渗液。蓄电池自放电率每月不大于3%。14）蓄电池在-30℃和65℃时封口剂应无裂纹和溢流。15）极柱端子部位不得出现渗漏电解液现象。16）蓄电池生产企业所提供产品必须为该企业所生产的原厂产品，不接受OEM代加工生产的产品，须提供设备制造商原厂生产证明。17）蓄电池生产企业须具有《排放污染物许可证》、《危险废物经营许可证》，并提供环评报告和清洁生产审核验收意见表产品检测报告。所有电池必须采用1#（Pb99.994）号铅，不得采用其他（低于Pb99.994）号铅或还原铅进行生产。18）蓄电池生产企业应已获得质量管理体系认证证书、环境管理体系认证证书和职业健康安全管理体系认证证书（须提供加盖公章的证书复印件）；19）蓄电池生产企业应通过CE、泰尔认证，并提供泰尔检验报告（须提供加盖公章的证书复印件）；20）蓄电池产品必须符合GB/T19638-2014和YD/T799-2010标准。★3.2响应及供货要求   3.2.1入围后，投标人须做好备货工作，保证充足货源。投标人在收到招标人的订单后，最迟应在3个工作日内响应。3.2.2入围后，投标人须严格按照合同供货，不得以任何理由推脱、延迟提供合同规定的全部或部分设备。在系统对接的情况下，需要确保系统稳定运行，不得影响客户正常使用。3.2.3针对单个订单，投标人须不得设最低下单量限制、不得设置最低订单金额限制。3.2.4投标人接到招标人订单后，须在14个工作日内完成供货，同时，安排专门的技术人员配合招标人进行安装、调试等工作。如遇系统升级等不可抗力因素无法保证正常对接的，须第一时间通知招标人，发现问题随时解决，保证招标人的业务正常有序开展。★3.3质保及售后服务要求3.3.1 UPS主机、电池柜、蓄电池须提供设备制造商三年免费质保。3.3.2投标人须提供7*24小时技术服务支持，及时响应并处理招标人提出的售后问题。3.3.3质保期间内，设备出现问题需要进行现场维护时，供应商须在1小时内做出响应，并保证在4个工作小时内到达现场，24小时内故障排除或更换设备（要求提供备件先行更换服务）。3.4.4投标人须针对所供设备制定巡检方案，每季度至少巡检一次。★3.5培训要求投标人应在设备安装调试之后，为招标人提供免费培训服务。★3.6其他要求投标人须对所供产品的知识产权负有全责。投标人应保证招标人在使用本项目货物或其任何一部分时，不受第三方提出侵犯专利权、商标权、著作权或其他知识产权起诉、指控；如果任何第三方提出侵权指控，投标人须与第三方交涉并承担发生的一切法律责任和费用。4.项目组织建议4.1分标包建议本项目不划分标包。4.2入围供应商数量及份额分配拟入围2家供应商，按区域分配份额。区域一：省分行、徐州、宿迁、盐城、泰州、镇江、南京、无锡；区域二：连云港、淮安、扬州、南通、常州、苏州。评分排名第一供应商可优先选择自己的供货份额。4.3集中踏勘本项目不涉及集中踏勘。4.4样品要求本项目不要求提供样品。4.5测试要求本项目不安排测试环节。★4.6履约保证金要求建议协议签署前，中标人须向招标人缴纳履约保证金10万元。协议到期后，招标人在收到投标人退还申请后，于30日内退还。★4.7合同签署建议4.7.1建议根据单价签署框架协议，据实结算，总费用不超过项目总预算。4.7.2协议有效期为2年。在协议有效期内，如招标人或招标人上级机构下发相同性质的采购结果，且影响本项目协议执行的，则该协议有效期至招标人或招标人上级机构集采结果规定的执行之日前一天。★4.8合同付款方式及付款单位要求4.8.1根据订单据实结算，招标人辖内各需求单位在收验货完毕，收到发票、经双方签署的采购订单、收货收据和投标人出具的付款通知之后，于30日内向投标人一次性支付当前订单费用。4.8.2付款单位为招标人及辖内各分支机构。★4.9供应商履约管理要求1.协议有效期内，除不可抗力因素外，非因招标人原因，发生以下情形之一的，视为投标人违约，招标人有权要求投标人承担违约责任，并按如下条款承担相应的违约金。（1）投标人不履行与招标人订立的协议的，或投标人单方面要求提前终止协议导致协议解约的，构成违约，招标人有权要求投标人支付人民币大写壹拾万元整（￥100000.00元）的违约金。（2）若投标人在招标投活动、或本协议的竞争和实施过程中有不正当竞争或欺诈行为的，招标人有权提出终止部分或全部协议，并可有权要求投标人支付人民币大写壹拾万元整（￥100000.00元）作为违约金。（3）投标人未按照协议规定时间按订单量交货的，招标人有权要求投标人按照1000元/天支付违约金，且须继续履行交货义务，直至交付为止；若延误超过10天（含）且仍未全部配送到位的，视为投标人断供，招标人有权要求投标人追加支付20000元的违约金；若投标人累计发生3次及以上断供，招标人有权单方面终止协议，并有权全额扣除投标人履约保证金。（4）投标人未按照招标人协议规定时间内修复故障或更换设备的，每延误一日的违约金按500元计收，直至投标人提供服务为止；若延误超过10天（含）且仍未修复故障或更换设备，招标人有权要求投标人追加支付10000元的违约金；若投标人累计发生5次及以上前述情形，招标人有权单方面终止协议，并有权全额扣除投标人履约保证金。（5）协议有效期内，若投标人所供设备中，单台设备出现故障累计达到3次（含）以上的，招标人有权要求投标人在接到招标人通知后7日内完成对应设备更换，相关费用由投标人承担。（6）若投标人出现提供的设备不符合国家相关法律规定和招标人关于设备质量及性能参数要求或提供假冒伪劣产品的，招标人有权单方面终止协议、全额扣除投标人履约保证金，并将投标人纳入招标人供应商灰名单/黑名单。（7）投标人发生上述违约行为，招标人有权直接从未付款项或履约保证金中扣除违约金。（8）投标人违反本项目约定，给招标人造成经济损失的，如支付违约金后仍不足以弥补招标人的损失，投标人还应赔偿由此给招标人造成的一切损失及所支出的一切费用（包括但不限于律师费、公证费、保全费用等）。2.招标人根据投标人的履约情况，按年对供货商开展供应商后评估工作，并公布年度后评估结果，评价分为A、B、C、D、E五个等级，如供应商年度后评估等级在C级（不含）以下，招标人有权单方面终止协议且不承担任何责任。★4.10 核验要求在中标候选人公示结束后、采购结果审批前，招标人有权结合项目实际需要，依据招标文件要求及投标文件应答内容，对候选单位采购需求响应及承诺情况进行核验。若核验不通过，招标人有权取消对应供应商的中标资格，拒绝与其签署协议，并根据招标文件及招标人供应商管理办法等规定进行处理。5.资格审查条件建议5.1资格审查条件（1）投标人应为中华人民共和国境内（不含香港、澳门、台湾地区）法律上和财务上独立的法人或依法登记注册的组织，合法运作并独立于招标人和招标代理机构。（2）本次招标不接受联合体投标/应答。（3）投标人须为所投设备的制造商或代理商。如为代理商，须提供所所投设备制造商出具的唯一专项授权（唯一专项授权至少应明确投标人名称、授权项目名称、授权品牌和产品、授权时长（不得低于2年）等，须有授权人签章及时间；若唯一专项授权的时间早于招标文件发布时间的，授权无效；若出现多份有效唯一专项授权的，授权时间最早的有效，若授权时间也相同，该品牌下所有投标均无效）。若制造商或代理商同时参与本项目投标，制造商投标有效。同一类设备（UPS或电池或电池柜），一个投标人仅能以一个品牌投标，若出现同一投标人以多个品牌投标的，该投标人的投标为无效投标。（4）单位负责人为同一人或者存在控股、管理关系的不同投标人，不得同时参加本项目的投标。（5）投标人的投标产品须取得如下证书：①UPS设备和蓄电池须提供泰尔和CE认证证书；（须提供证书复印件，原件备查）②蓄电池的制造商需要具备《排放污染物许可证》、《危险废物经营许可证》，具有质量管理体系认证证书、环境管理体系认证证书、职业健康安全管理体系认证证书。（须提供证书复印件，原件备查）（6）投标人须提供至少一份、近三年（2019年10月以来）、与投标产品品牌一致的UPS设备或蓄电池销售安装业绩合同。（须提供合同及合同项下结算发票复印件，原件备查）（7）投标人应该能够开具符合法律要求的增值税专用发票。（须提供承诺函）（8）与邮政无投资关系且存在以下情况的，不得参加采购活动：邮政领导人员及其亲属和其他特定关系人、邮政员工持股（限非上市公司），以个人身份（组织委派的除外）担任法人、董事长、总经理、监事的企业，以及邮政所属工会或员工集体出资成立的企业。（须提供与邮政无投资关系且不存在所列情形的承诺函）5.2投标人不得存在下列情形之一（1）投标人被责令停业或处于破产状态的；（2）投标人被招标人暂停或取消招标人采购项目投标资格，或被招标人评定为E级，或纳入招标人供应商准入限制名单（尚未移出）/灰名单（尚未移出）/黑名单的；（3）投标人财产被重组、接管、查封、扣押或冻结的；（4）投标人近5年（2017年10月至今）内与中国邮政企业有经济或法律纠纷；（5）投标人近5年（2017年10月至今）内被列入中国政府采购网(www.ccgp.gov.cn)政府采购严重违法失信行为记录名单的；或被列入“信用中国”网站(www.creditchina.gov.cn)失信被执行人名单、重大税收违法案件当事人名单的；或被列入“国家企业信用信息公示系统”网站(www.gsxt.gov.cn)严重违法失信企业名单（黑名单）的。（6）投标人近5年（2017年10月年至今）内有行贿犯罪记录的；（7）投标人与招标人存在利害关系且可能影响招标公正性的；（8）法律法规禁止的其他投标/应答行为。（如无上述（1）-（8）条所列情形的，须提供承诺函）6.评分内容构成建议6.1.1价格部分项目报价，建议合理低价优先法。6.1.2商务部分（1）企业综合实力；（2）企业业绩。根据投标人近3年内（2019年10月以来）、单项合同金额在100万元（含）以上、与投标产品品牌一致的UPS设备或蓄电池，或UPS设备及蓄电池的销售安装业绩合同进行评分。（须提供合同及合同项下结算发票复印件，原件备查）；江苏省内业绩可适当加分。（同一合作单位的业绩最多计2份）6.1.3技术部分（1）设备参数。根据设备参数，对比文件技术参数要求，参数呈正偏离的指标或功能数量、重要性、技术难度等内容进行评分。（2）设备节能环保。根据UPS设备是否具有CQC节能认证；UPS设备及电池的能耗技术指标、功率、节能技术、材料是否环保可回收等内容进行评分。（3）项目实施方案。根据服务团队配置、需求响应及配送方案、供货稳定性方案等内容进行评分。（4）服务方案。售后团队配置、服务响应及处理时效、设备操作培训方案等。'},
    # hist = [{'role': 'system', 'content': '你扮演一位专业的招标代理项目经理，你需要先了解客户的招标需求，再参考知识库中教你的写作技巧，写一篇招标文件。对于未提供的信息，请回答无可奉告。'},
    #        {'role': 'user', 'content': '中国邮政储蓄银行股份有限公司江苏省分行2022-2024年全省UPS设备、电池及电池柜集中采购项目技术规范书需求部门经办人（签名）：                            需求部门负责人（签名）：                                      1.概述1.1 本规范书为中国邮政储蓄银行股份有限公司江苏省分行（以下称 “招标人”）为2022-2024年全省UPS设备、电池及电池柜集中采购项目编制的技术规范书，用于供应商（以下称“投标人”）编写技术建议书、技术应答偏离表和报价。1.2投标人应在响应偏离表中对本规范书内容按顺序逐条应答。对本规范书所有条款按“满足”或“不满足”应答。1.3本规范书中加注星号（“★”）的为关键技术要求。关键技术要求不满足则视为废标。如在履约过程中发现投标产品的关键/重要技术或服务要求，与技术规范投标文件中的应答不相符，则招标人有权废除本次中标选结果，招标人因此产生的一切损失由投标人承担。1.4招标人保留对本文件的解释和修改权。招标人有权在投标截止前，根据需要修改和补充本技术规范书。2.采购内容概况2.1需求概述（1）为了保证全省UPS设备、电池及电池柜的持续供应，招标人拟对全省UPS设备、电池及电池柜进行集中采购。（2）本次采购期限为2年。2.2采购内容本次采购内容为UPS设备、电池及电池柜，项目预算为399.1万元。具体需求清单如下（单位：元）：3.项目实施要求★3.1技术参数指标：3.1.1环境要求工作温度：5～40度  贮存温度：-25～55度工作相对湿度：≤90% （402）℃ 无凝露贮存相对湿度：≤95% （402）℃ 无凝露海拔：不超过1000m3.1.2 UPS参数要求（1）1-3KV（2）6kv-10kv（3）15kv-40kv3.1.3 电池与电池柜技术参数要求（1）电池柜须为全封闭金属电池柜，须与电池配套。（2）投标人负责对所销售的电池在报废时进行回收，回收价格在本次投标的销售价格中进行折让，回收时双方不再支付或收取任何费用。（3）电池要求：①12V单体电池 100AH②单体电池额定电压：12V③单体电池浮充电电压：13.5-13.8V④单体电池均衡充电电压：14.1-14.4V⑤单体电池放电终止电压：10.8V（4）主要性能要求：1）当环境温度在20～30℃条件下时，蓄电池性能指标应满足正常使用要求。2）蓄电池在环境温度25℃时的浮充运行设计寿命应不低于6年。3）蓄电池组按规定的试验方法，10h率容量应在第一次充放电循环时不低于0.95C10，三次循环应达到1C10。 4）蓄电池间接线板、终端接头应选择导电性能优良的材料，并具有防腐蚀措施。蓄电池槽、盖、安全阀、极柱封口剂等材料应具有阻燃性。5）蓄电池必须采用全密封防泄漏结构，外壳无异常变形、裂纹及污迹，上盖及端子无损伤，正常工作时无酸雾溢出。6）蓄电池极性正确，正负极性及端子应有明显标志。极板厚度应与使用寿命相适应。7）同一组蓄电池中任意两个电池的开路电压差不应超过60mV。8）蓄电池使用期间安全阀应能自动开启闭合，闭阀压力应在10〜35kPa范围内，开阀压力应在3〜30kPa范围内。两个蓄电池之间连接条的压降，3I10时不超过8mv。9）电池组间互连接线应绝缘，终端电池应提供外接铜芯电缆至直流柜的接线板。10）电池以30I10的电流放电3min，极柱不熔断，其外观不出现异常。11）蓄电池封置28天后，其荷电保持能力不低于96%。12）蓄电池的密封反应效率不低于95%。13）蓄电池需具有较强的耐过充能力和过充寿命。以0.3I10电流连续充电160h后，外观应无明显变形及渗液。蓄电池自放电率每月不大于3%。14）蓄电池在-30℃和65℃时封口剂应无裂纹和溢流。15）极柱端子部位不得出现渗漏电解液现象。16）蓄电池生产企业所提供产品必须为该企业所生产的原厂产品，不接受OEM代加工生产的产品，须提供设备制造商原厂生产证明。17）蓄电池生产企业须具有《排放污染物许可证》、《危险废物经营许可证》，并提供环评报告和清洁生产审核验收意见表产品检测报告。所有电池必须采用1#（Pb99.994）号铅，不得采用其他（低于Pb99.994）号铅或还原铅进行生产。18）蓄电池生产企业应已获得质量管理体系认证证书、环境管理体系认证证书和职业健康安全管理体系认证证书（须提供加盖公章的证书复印件）；19）蓄电池生产企业应通过CE、泰尔认证，并提供泰尔检验报告（须提供加盖公章的证书复印件）；20）蓄电池产品必须符合GB/T19638-2014和YD/T799-2010标准。★3.2响应及供货要求   3.2.1入围后，投标人须做好备货工作，保证充足货源。投标人在收到招标人的订单后，最迟应在3个工作日内响应。3.2.2入围后，投标人须严格按照合同供货，不得以任何理由推脱、延迟提供合同规定的全部或部分设备。在系统对接的情况下，需要确保系统稳定运行，不得影响客户正常使用。3.2.3针对单个订单，投标人须不得设最低下单量限制、不得设置最低订单金额限制。3.2.4投标人接到招标人订单后，须在14个工作日内完成供货，同时，安排专门的技术人员配合招标人进行安装、调试等工作。如遇系统升级等不可抗力因素无法保证正常对接的，须第一时间通知招标人，发现问题随时解决，保证招标人的业务正常有序开展。★3.3质保及售后服务要求3.3.1 UPS主机、电池柜、蓄电池须提供设备制造商三年免费质保。3.3.2投标人须提供7*24小时技术服务支持，及时响应并处理招标人提出的售后问题。3.3.3质保期间内，设备出现问题需要进行现场维护时，供应商须在1小时内做出响应，并保证在4个工作小时内到达现场，24小时内故障排除或更换设备（要求提供备件先行更换服务）。3.4.4投标人须针对所供设备制定巡检方案，每季度至少巡检一次。★3.5培训要求投标人应在设备安装调试之后，为招标人提供免费培训服务。★3.6其他要求投标人须对所供产品的知识产权负有全责。投标人应保证招标人在使用本项目货物或其任何一部分时，不受第三方提出侵犯专利权、商标权、著作权或其他知识产权起诉、指控；如果任何第三方提出侵权指控，投标人须与第三方交涉并承担发生的一切法律责任和费用。4.项目组织建议4.1分标包建议本项目不划分标包。4.2入围供应商数量及份额分配拟入围2家供应商，按区域分配份额。区域一：省分行、徐州、宿迁、盐城、泰州、镇江、南京、无锡；区域二：连云港、淮安、扬州、南通、常州、苏州。评分排名第一供应商可优先选择自己的供货份额。4.3集中踏勘本项目不涉及集中踏勘。4.4样品要求本项目不要求提供样品。4.5测试要求本项目不安排测试环节。★4.6履约保证金要求建议协议签署前，中标人须向招标人缴纳履约保证金10万元。协议到期后，招标人在收到投标人退还申请后，于30日内退还。★4.7合同签署建议4.7.1建议根据单价签署框架协议，据实结算，总费用不超过项目总预算。4.7.2协议有效期为2年。在协议有效期内，如招标人或招标人上级机构下发相同性质的采购结果，且影响本项目协议执行的，则该协议有效期至招标人或招标人上级机构集采结果规定的执行之日前一天。★4.8合同付款方式及付款单位要求4.8.1根据订单据实结算，招标人辖内各需求单位在收验货完毕，收到发票、经双方签署的采购订单、收货收据和投标人出具的付款通知之后，于30日内向投标人一次性支付当前订单费用。4.8.2付款单位为招标人及辖内各分支机构。★4.9供应商履约管理要求1.协议有效期内，除不可抗力因素外，非因招标人原因，发生以下情形之一的，视为投标人违约，招标人有权要求投标人承担违约责任，并按如下条款承担相应的违约金。（1）投标人不履行与招标人订立的协议的，或投标人单方面要求提前终止协议导致协议解约的，构成违约，招标人有权要求投标人支付人民币大写壹拾万元整（￥100000.00元）的违约金。（2）若投标人在招标投活动、或本协议的竞争和实施过程中有不正当竞争或欺诈行为的，招标人有权提出终止部分或全部协议，并可有权要求投标人支付人民币大写壹拾万元整（￥100000.00元）作为违约金。（3）投标人未按照协议规定时间按订单量交货的，招标人有权要求投标人按照1000元/天支付违约金，且须继续履行交货义务，直至交付为止；若延误超过10天（含）且仍未全部配送到位的，视为投标人断供，招标人有权要求投标人追加支付20000元的违约金；若投标人累计发生3次及以上断供，招标人有权单方面终止协议，并有权全额扣除投标人履约保证金。（4）投标人未按照招标人协议规定时间内修复故障或更换设备的，每延误一日的违约金按500元计收，直至投标人提供服务为止；若延误超过10天（含）且仍未修复故障或更换设备，招标人有权要求投标人追加支付10000元的违约金；若投标人累计发生5次及以上前述情形，招标人有权单方面终止协议，并有权全额扣除投标人履约保证金。（5）协议有效期内，若投标人所供设备中，单台设备出现故障累计达到3次（含）以上的，招标人有权要求投标人在接到招标人通知后7日内完成对应设备更换，相关费用由投标人承担。（6）若投标人出现提供的设备不符合国家相关法律规定和招标人关于设备质量及性能参数要求或提供假冒伪劣产品的，招标人有权单方面终止协议、全额扣除投标人履约保证金，并将投标人纳入招标人供应商灰名单/黑名单。（7）投标人发生上述违约行为，招标人有权直接从未付款项或履约保证金中扣除违约金。（8）投标人违反本项目约定，给招标人造成经济损失的，如支付违约金后仍不足以弥补招标人的损失，投标人还应赔偿由此给招标人造成的一切损失及所支出的一切费用（包括但不限于律师费、公证费、保全费用等）。2.招标人根据投标人的履约情况，按年对供货商开展供应商后评估工作，并公布年度后评估结果，评价分为A、B、C、D、E五个等级，如供应商年度后评估等级在C级（不含）以下，招标人有权单方面终止协议且不承担任何责任。★4.10 核验要求在中标候选人公示结束后、采购结果审批前，招标人有权结合项目实际需要，依据招标文件要求及投标文件应答内容，对候选单位采购需求响应及承诺情况进行核验。若核验不通过，招标人有权取消对应供应商的中标资格，拒绝与其签署协议，并根据招标文件及招标人供应商管理办法等规定进行处理。5.资格审查条件建议5.1资格审查条件（1）投标人应为中华人民共和国境内（不含香港、澳门、台湾地区）法律上和财务上独立的法人或依法登记注册的组织，合法运作并独立于招标人和招标代理机构。（2）本次招标不接受联合体投标/应答。（3）投标人须为所投设备的制造商或代理商。如为代理商，须提供所所投设备制造商出具的唯一专项授权（唯一专项授权至少应明确投标人名称、授权项目名称、授权品牌和产品、授权时长（不得低于2年）等，须有授权人签章及时间；若唯一专项授权的时间早于招标文件发布时间的，授权无效；若出现多份有效唯一专项授权的，授权时间最早的有效，若授权时间也相同，该品牌下所有投标均无效）。若制造商或代理商同时参与本项目投标，制造商投标有效。同一类设备（UPS或电池或电池柜），一个投标人仅能以一个品牌投标，若出现同一投标人以多个品牌投标的，该投标人的投标为无效投标。（4）单位负责人为同一人或者存在控股、管理关系的不同投标人，不得同时参加本项目的投标。（5）投标人的投标产品须取得如下证书：①UPS设备和蓄电池须提供泰尔和CE认证证书；（须提供证书复印件，原件备查）②蓄电池的制造商需要具备《排放污染物许可证》、《危险废物经营许可证》，具有质量管理体系认证证书、环境管理体系认证证书、职业健康安全管理体系认证证书。（须提供证书复印件，原件备查）（6）投标人须提供至少一份、近三年（2019年10月以来）、与投标产品品牌一致的UPS设备或蓄电池销售安装业绩合同。（须提供合同及合同项下结算发票复印件，原件备查）（7）投标人应该能够开具符合法律要求的增值税专用发票。（须提供承诺函）（8）与邮政无投资关系且存在以下情况的，不得参加采购活动：邮政领导人员及其亲属和其他特定关系人、邮政员工持股（限非上市公司），以个人身份（组织委派的除外）担任法人、董事长、总经理、监事的企业，以及邮政所属工会或员工集体出资成立的企业。（须提供与邮政无投资关系且不存在所列情形的承诺函）5.2投标人不得存在下列情形之一（1）投标人被责令停业或处于破产状态的；（2）投标人被招标人暂停或取消招标人采购项目投标资格，或被招标人评定为E级，或纳入招标人供应商准入限制名单（尚未移出）/灰名单（尚未移出）/黑名单的；（3）投标人财产被重组、接管、查封、扣押或冻结的；（4）投标人近5年（2017年10月至今）内与中国邮政企业有经济或法律纠纷；（5）投标人近5年（2017年10月至今）内被列入中国政府采购网(www.ccgp.gov.cn)政府采购严重违法失信行为记录名单的；或被列入“信用中国”网站(www.creditchina.gov.cn)失信被执行人名单、重大税收违法案件当事人名单的；或被列入“国家企业信用信息公示系统”网站(www.gsxt.gov.cn)严重违法失信企业名单（黑名单）的。（6）投标人近5年（2017年10月年至今）内有行贿犯罪记录的；（7）投标人与招标人存在利害关系且可能影响招标公正性的；（8）法律法规禁止的其他投标/应答行为。（如无上述（1）-（8）条所列情形的，须提供承诺函）6.评分内容构成建议6.1.1价格部分项目报价，建议合理低价优先法。6.1.2商务部分（1）企业综合实力；（2）企业业绩。根据投标人近3年内（2019年10月以来）、单项合同金额在100万元（含）以上、与投标产品品牌一致的UPS设备或蓄电池，或UPS设备及蓄电池的销售安装业绩合同进行评分。（须提供合同及合同项下结算发票复印件，原件备查）；江苏省内业绩可适当加分。（同一合作单位的业绩最多计2份）6.1.3技术部分（1）设备参数。根据设备参数，对比文件技术参数要求，参数呈正偏离的指标或功能数量、重要性、技术难度等内容进行评分。（2）设备节能环保。根据UPS设备是否具有CQC节能认证；UPS设备及电池的能耗技术指标、功率、节能技术、材料是否环保可回收等内容进行评分。（3）项目实施方案。根据服务团队配置、需求响应及配送方案、供货稳定性方案等内容进行评分。（4）服务方案。售后团队配置、服务响应及处理时效、设备操作培训方案等。'},
    #        {'role': 'user', 'content': '招标项目全称是什么？'}
    #        ]

    # response = llm_bot.run(his)
    reply = []

    for response in llm_bot.run(messages=history):
        # if response["status_code"] == 200:
        #     if choices := response["output"].get("choices", []):
        #         if choices:
        #             yield {
        #                 "error_code": 0,
        #                 "text": choices[0]["message"]["content"],
        #             }
        # print('bot response:', response)
        reply.extend(response)

    return reply


def bot_gen_doc():
    bot = Assistant(llm=llm_cfg,
                    system_message='你扮演一位专业的招标代理项目经理，你需要先了解客户的招标需求，' +
                                   '再参考知识库中教你的写作技巧，写一篇招标文件。',
                    files=[os.path.abspath('./output.doc')])

    bot_vl = Assistant(llm=llm_cfg_vl)

    messages = [{
        'role':
            'user',
        'content': [{
            'text': '请详细描述这张图片的所有细节内容，图中的人是三国演义中的吕布，人称三姓家奴'
        }, {
            'image':
                'https://img2.baidu.com/it/u=3914823975,2653255532&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500'
        }]
    }]

    response = bot_vl.run(messages)
    for x in response:
        print(x)
    messages.extend(x)

    messages.append({'role': 'user', 'content': '开始根据以上图片内容编写你的记叙文吧！'})
    response = bot.run(messages)

    for chunk in response:
        print(chunk[-1]['content'])

    save_text_to_file('write_from_picture_output.md', chunk[-1]['content'])


if __name__ == "__main__":
    bot = llm_init()
    req = read_from_doc(doc_req_path)
    his = util_req_to_history(req)
    ans = llm_get_answer(bot,his,'招标项目全称是什么？')
    print(ans)